﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using DAL.Entity;

namespace DAL.Persistencia
{
    public class CategoriaDAL
    {
          NewTierraEntities Con = new NewTierraEntities();

        //Método para gravar um registro na tabela Periodo
        public void Salvar(S_Categoria c)
        {
            try
            {

                //Rotinas prontas para o banco de dados
                Con.AddToS_Categoria(c); //insert into S_Categoria values...
                Con.SaveChanges(); //Executar a operação

            }
            catch
            {
                throw;
            }
        }

        //Método para Excluir o S_Categoria na base
        public void Excluir(S_Categoria c)
        {
            try
            {
                Con.DeleteObject(c); //Prepara a deleção
                Con.SaveChanges(); //Executa a transação (commit)
            }
            catch
            {
                throw;
            }
        }

        //Metodo para listar todos os S_Categoria cadastrados
        public List<S_Categoria> ListarTodos()
        {
            try
            {
                //SQL -> select * from S_Categoria
                return Con.S_Categoria.ToList();
            }
            catch
            {
                throw;
            }
        }

        //Metodo para listar todos os S_Categoria cadastrados por S_id

        public S_Categoria ListarTodos(Int32 SupplierID)
        {
            try
            {
                var query = (from c in Con.Suppliers
                            where c.S_id == SupplierID
                            select c.Categ_id).Single();

                return Con.S_Categoria.Where(sc => sc.Categ_id == query).Single();
            }
            catch
            {
                throw;
            }
        }

        //Método para obter 1 S_Categoria pelo Id
        public S_Categoria ObterPorId(int IdCategoria)
        {
            try
            {
                //select * from TbCliente where IdCliente = ?
                return Con.S_Categoria.Where(c => c.Categ_id == IdCategoria).Single();

                //Single -> Retorna apenas 1 Registro e dá erro para qualquer
                //          resultado diferente de 1 Registro.
            }
            catch
            {
                throw;
            }
        }

        //Método para atualizar os dados do S_Mercado_Meal
        public void Atualizar(S_Categoria registroNovo)
        {
            try
            {
                //Buscar na base de dados o Registro antigo
                S_Categoria registroAntigo = ObterPorId(registroNovo.Categ_id);

                //Atualizando os dados
                registroAntigo.Categ_classificacao = registroNovo.Categ_classificacao;
                registroAntigo.Categ_ordem = registroNovo.Categ_ordem;
                registroAntigo.Categ_imgmemo = registroNovo.Categ_imgmemo;
                registroAntigo.Categ_imgnome = registroNovo.Categ_imgnome;

                //Executo a transação
                Con.SaveChanges();
            }
            catch
            {
                throw;
            }
        }

    }
}
